using System;

namespace Microsoft.Practices.RepositoryFactory.CodeGeneration.ObjectModel.NamingConventions
{
    /// <summary>
    /// Defines a naming strategy.
    /// </summary>
    public abstract class NamingStrategy
    {
        public abstract string GetFieldName(string type);
        public abstract string GetMethodParameterName(string type);
        public abstract string GetPropertyName(string type);
        public abstract string GetVariableName(string type, bool convertToValidIdentifier);

        protected string GetVariableName(string type)
        {
            return this.GetVariableName(type, false);
        }

    }
}
